#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//int main()
//{
//	char str[10000] = { 0 };
//	gets(str);
//	int len = 0;
//	int i = 0;
//	int j = 0;
//	while (str[i] != '\0')
//	{
//		len++;
//		i++;
//	}
//
//	char temp = 0;
//	for (i = 0,j=len-1; i <j; i++,j--)
//	{
//		temp = str[j];
//		str[j] = str[i];
//		str[i] = temp;
//	}
//
//	for (i = 0; i < len; i++)
//		printf("%c", str[i]);
//
//	return 0;


//int main()
//{
//	
//
//	printf("      *      \n");
//	printf("     ***     \n");
//	printf("    *****    \n");
//	printf("   *******   \n");
//	printf("  *********  \n");
//	printf(" *********** \n");
//	printf("*************\n");
//	printf(" *********** \n");
//	printf("  *********  \n");
//	printf("   *******   \n");
//	printf("    *****    \n");
//	printf("     ***     \n");
//	printf("      *      ");
//
//	return 0;


//int main()
//{
//
//
//	int a = 0;
//	scanf("%d", &a);
//	int sum = a;
//	int ret = 0;
//	int temp = a;
//
//
//	for (int j = 0; j < 5; j++)
//	{
//		for (int i = 0; i < j; i++)
//		{
//			a = a * 10;
//			sum = sum + a;
//		}
//		ret = sum + ret;
//		//printf("%d ", sum);
//		a = temp;
//		sum = temp;
//	
//	}
//
//	printf("%d ", ret);
//	
//
//
//
//	return 0;
//}


long long  get(long long n)
{
	return n * n * n;
}



int  is_right(long long n)
{
	long long d6 = (n / 100000) % 10;
	long long d5 = (n / 10000) % 10;
	long long d4 = (n / 1000) % 10;
	long long d3 = (n / 100) % 10;
	long long d2 = (n / 10) % 10;
	long long d1 = n % 10;
	//printf("%lld %lld %lld %lld %lld %lld", d6, d5, d4, d3, d2, d1);

	if ((get(d1) + get(d2) + get(d3) + get(d4) + get(d5) + get(d6)) == n)
		return 1;
	else
		return 0;
 
 }

int main()
{

	for (int i = 1; i < 100000; i++)
	{
		if (is_right(i))
			printf("%d ", i);
	}

	return 0;
}